import java.io.*;
import java.util.zip.*;
import javax.swing.tree.*;

/** Format de patch adaptable
  * pour la traduction de jeux video
  *
  * @author     Nemesis (nemesis_tt@yahoo.fr)
  * @version    04/05/04
  */
 
public class Patch
{
    /** Fenêtre principale */
    private Patcheur patcheur;

    /** Fichier image */
    private String iso;

    /** Entete du patch */
    private Entete entete;
    
    /** Modifications */
    private Modif modifs;
    
    /** Fichier Zip associé */
    private ZipPatch zip;
    
    /** Constructeur */
    public Patch(Patcheur p, File fich) throws IOException
    {
        patcheur = p;
        
        // Ouverture du fichier
        zip = new ZipPatch(fich);
        
        // Chargement du listing des modifs
        modifs = Modif.chargement(zip);
    }
    
    /** Liste des éléments constitutifs du patch */
    public Modif getModifs() {
        return modifs;
    }
    
    /** Fixe l'image sur laquelle appliquer l'iso */
    public void setIso(String iso_) {
        iso = iso_;
    }
    
    /** Obtention du Zip contenant les éléments */
    public ZipPatch getZip() {
        return zip;
    }
    
    /** Application du patch */
    public void appliquer() {
        Logueur.loguer_titre("Application du patch en cours");
        Logueur.loguer(this,Librairie.dumpRein_init(iso));
        
        if (Logueur.noError()) {
            Logueur.loguer_texte("Image CD correctement ouverte");
            modifs.appliquer();
            Librairie.dumpRein_close();
            Logueur.loguer_texte("Fermeture et mise à jour de la table effectuées");
        }
    }
    
    /** Chaine équivalente */
    public String toString() {
        return "Patchage de l'image";
    }
}
